/*************************************************************************
    > File Name    : WordSegmentation.h
    > Author       : LiuLei
    > Mail         : 2261459486@qq.com 
    > Created Time : 2022年11月29日 星期二 16时24分36秒
 ************************************************************************/

#ifndef __LL_WORDSEGMENTAION_H__
#define __LL_WORDSEGMENTAION_H__

#include "Configuration.h"
#include <vector>
#include <string>
#include "../../lib/cppjieba/Jieba.hpp"
using std::vector;
using std::string;

/* const char * const DICT_PATH = getPath("DICT_PATH").c_str() 是危险的 */
/* getPath()返回的是值拷贝的临时变量 */
/* 使用c_str()函数获取的是string内容的指针，但是临时变量会立即销毁导致指针失效 */

const string DICT_PATH = getPath("DICT_PATH");
// 最大概率法(MPSegment: Max Probability)分词所使用的词典路径

const string HMM_PATH = getPath("HMM_PATH");
// 隐式马尔科夫模型(HMMSegment: Hidden Markov Model)分词所使用的词典路径

const string USER_DICT_PATH = getPath("USER_DICT_PATH");
// 用户自定义词典路径

const string IDF_PATH = getPath("IDF_PATH");
// IDF路径

const string STOP_WORD_PATH = getPath("STOP_WORD_PATH");
// 停用词路径

class WordSegmentation
{
public:
    WordSegmentation();
    ~WordSegmentation();

    // 分词函数
    vector<string> operator()(const string &sentence);

private:
    cppjieba::Jieba _jieba;
};

#endif
